// package com.hoperun.nocserver.modules.example;
//
// import java.util.UUID;
// import java.util.concurrent.ExecutorService;
// import java.util.concurrent.Executors;
//
// import org.nutz.log.Log;
// import org.nutz.log.Logs;
// import org.springframework.amqp.core.AcknowledgeMode;
// import org.springframework.amqp.core.Message;
// import org.springframework.amqp.core.MessageBuilder;
// import org.springframework.amqp.core.MessageProperties;
// import org.springframework.amqp.core.Queue;
// import org.springframework.amqp.rabbit.connection.Connection;
// import org.springframework.amqp.rabbit.connection.ConnectionFactory;
// import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
// import org.springframework.amqp.rabbit.core.RabbitTemplate;
// import
// org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
// import org.springframework.amqp.rabbit.support.CorrelationData;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.scheduling.annotation.Scheduled;
// import org.springframework.stereotype.Component;
//
// import com.hoperun.nocserver.common.conf.RabbitMQConfig;
// import com.rabbitmq.client.Channel;
//
// @Component //
// public class TestRabbitmqSend implements RabbitTemplate.ConfirmCallback {
//
// private static final Log LOGGER = Logs.get();
//
// public static int size = 1;
//
// @Autowired
// private ConnectionFactory connectionFactory;
//
// private RabbitTemplate rabbitTemplate;
//
// public TestRabbitmqSend(RabbitTemplate rabbitTemplate) {
// this.rabbitTemplate = rabbitTemplate;
// // 设置消费回调
// this.rabbitTemplate.setConfirmCallback(this);
// }
//
// @Scheduled(fixedDelay = 1000)
// public void run() throws Exception {
// Message message =
// MessageBuilder.withBody("1111".getBytes()).setContentType(MessageProperties.CONTENT_TYPE_JSON)
// .setContentEncoding("utf-8").setMessageId(UUID.randomUUID() + "").build();
// // 发送
// // drmt.radio为指定队列
// Object response = this.rabbitTemplate.convertSendAndReceive("drmt.radio",
// message);
// System.out.println(response);
// }
//
// public void test3() {
// // 动态创建
// // test2();
// Message message =
// MessageBuilder.withBody("1111".getBytes()).setContentType(MessageProperties.CONTENT_TYPE_JSON)
// .setContentEncoding("utf-8").setMessageId(UUID.randomUUID() + "").build();
// // 发送
// // drmt.user为指定队列
// this.rabbitTemplate.convertAndSend("drmt.radio", message);
// }
//
// /**
// * 动态创建队列
// *
// * @throws Exception
// */
// public void test2() throws Exception {
// final String queue = "hello." + size;
// Connection connection = connectionFactory.createConnection();
// Channel channel = connection.createChannel(false);
// channel.queueDeclare(queue, false, false, false, null);
// channel.queueBind(queue, RabbitMQConfig.EXCHANGE, RabbitMQConfig.ROUTINGKEY);
//
// SimpleMessageListenerContainer container = new
// SimpleMessageListenerContainer(connectionFactory);
// container.setQueues(new Queue(queue));
// container.setExposeListenerChannel(true);
// container.setMaxConcurrentConsumers(200);
// container.setConcurrentConsumers(4);
// ExecutorService executorService = Executors.newFixedThreadPool(128);
// container.setTaskExecutor(executorService); // 设置确认模式手工确认
// container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
// container.setMessageListener(new ChannelAwareMessageListener() {
//
// @Override
// public void onMessage(Message message, Channel channel) throws Exception {
// try {
// byte[] body = message.getBody();
// LOGGER.debug(queue + "-" + Thread.currentThread().getName() + " receive msg :
// " + new String(body));
// } catch (Exception e) {
// LOGGER.error("处理消息异常！", e);
// } finally {
// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
// }
// }
// });
// container.start();
// size++;
// }
//
// public void test1() {
// CorrelationData correlationId = new
// CorrelationData(UUID.randomUUID().toString());
// // 交换机名称
// // 路由关键字
// rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE,
// RabbitMQConfig.ROUTINGKEY, "hello", correlationId);
// }
//
// @Override
// public void confirm(CorrelationData correlationData, boolean ack, String
// cause) {
// LOGGER.info(" 回调id:" + correlationData);
// if (ack) {
// LOGGER.info("消息成功消费");
// } else {
// LOGGER.info("消息消费失败:" + cause);
// }
// }
//
// }
